package co.edu.javeriana.konigsberg.xavier.gui.bean;


import java.math.BigInteger;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;

import co.edu.javeriana.konigsberg.xavier.dto.FacultadDTO;
import co.edu.javeriana.konigsberg.xavier.servicio.FacultadServicioLocal;

@ManagedBean(name="facultadBean")
@SessionScoped
public class FacultadBean extends ManagerBean{
	private static final long serialVersionUID = 1L;

	@EJB
	private FacultadServicioLocal facultadServicio;
	
	@ManagedProperty(value="#{areaGestionBean}")
	private AreaGestionBean areaGestionBean;
	
	private BigInteger idFacultad;
	private Map<String,BigInteger> facultades;
	
	private Map<String,BigInteger> todasFacultades;

	@PostConstruct
	public void init(){
	}
	
	public Map<String, BigInteger> getFacultades() {
		return facultades;
	}
	public void setFacultades(Map<String, BigInteger> facultades) {
		this.facultades = facultades;
	}

	public void cuandoAreaGestionCambie() {
		facultades = new TreeMap<String, BigInteger>();
		List<FacultadDTO> facultadDTOs = facultadServicio.obtenerListaDePadre(areaGestionBean.obtenerSeleccionado());
		for (FacultadDTO facultadDTO : facultadDTOs) {
			facultades.put(facultadDTO.getNombreFacultad(), facultadDTO.getIdFacultad());
		}
	}

	public FacultadDTO obtenerSeleccionado() {
		FacultadDTO facultadDTO = facultadServicio.obtenerFacultadPorId(getIdFacultad());
		return facultadDTO;
	}

	public BigInteger getIdFacultad() {
		return idFacultad;
	}

	public void setIdFacultad(BigInteger idFacultad) {
		this.idFacultad = idFacultad;
	}

	public void setAreaGestionBean(AreaGestionBean areaGestionBean) {
		this.areaGestionBean = areaGestionBean;
	}

	public Map<String, BigInteger> getTodasFacultades() {
		if(todasFacultades == null){
			todasFacultades = new LinkedHashMap<String, BigInteger>();
			List<FacultadDTO> facultadDTOs = facultadServicio.obtenerLista();
			for (FacultadDTO facultadDTO : facultadDTOs) {
				todasFacultades.put(facultadDTO.getNombreFacultad(), facultadDTO.getIdFacultad());
			}
		}
		return todasFacultades;
	}

	public void setTodasFacultades(Map<String, BigInteger> todasFacultades) {
		this.todasFacultades = todasFacultades;
	}
}
